/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sn.service;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import sn.dao.AmitieDAO;
import sn.dao.IdentificationDAO;
import sn.dao.NotificationDAO;
import sn.dao.PartageDAO;
import sn.dao.PersonneDAO;
import sn.metier.Amitie;
import sn.metier.Identification;
import sn.metier.Notification;
import sn.metier.Partage;
import sn.metier.Personne;

/**
 *
 * @author Pluce
 */
@Component
public class NotificationServiceImpl implements NotificationService{

    @Autowired
    private NotificationDAO notificationDAO;
    
    @Autowired
    private AmitieDAO amitieDAO;
    
    @Autowired
    private IdentificationDAO identificationDAO;
    
    @Autowired
    private PersonneDAO personneDAO;
    
    @Autowired
    private PartageDAO partageDAO;
    
    @Override
    public List<Notification> listerNotificationParDestinataire(Long idpers) {
        return notificationDAO.findNonLuByDestinataire(idpers);
    }

    @Override
    public Notification demanderAmitie(Long idauteur, Long idami, String commentaire) {
        Personne auteur = personneDAO.findById(idauteur);
        Personne ami = personneDAO.findById(idami);
        if(ami == null || auteur == null){
            throw new IllegalArgumentException("Auteur et Ami ne devraient pas être null");
        }
        Amitie a = new Amitie(commentaire,auteur,ami);
        return amitieDAO.save(a);
    }

    @Override
    public Notification identifierPersonne(Long idauteur, Long identifier, Long lienPartage) {
        Personne auteur = personneDAO.findById(idauteur);
        Personne ami = personneDAO.findById(identifier);
        Partage partage = partageDAO.findById(lienPartage);
        if(ami == null || auteur == null){
            throw new IllegalArgumentException("Auteur et Ami ne devraient pas être null");
        }
        Identification a = new Identification(partage,auteur,ami);
        partage.getDestinataire().add(ami);
        partageDAO.save(partage);
        return identificationDAO.save(a);
    }

    @Override
    public void luIdentification(Long idUtilisateur, Long idNote) {
        Notification note = notificationDAO.findById(idNote);

        if(note.getDestinataire().getId().equals(idUtilisateur)){
            note.setIsLu(true);
            notificationDAO.save(note);
        }
    }
    
}
